ここでは マシンレベルのプログラム視点に移行します。ここでハードウェアの複雑さは、構造化された 仮想アドレス空間に抽象化されます。この視点では、メモリは変数の集まりではなく、8ビットのブロックからなる巨大で連続した配列です。 バイト。ワードサイズが $w$ ビットのマシンの場合、これらのアドレスは $0$ から $2^w - 1$ の範囲に及び、プログラムの到達可能範囲を定義します。
1. 16の力
バイナリは回路の言語ですが、 16進数表記 はプログラマーの言語です。なぜなら $16 = 2^4$ であるため、1つの16進数桁(0~F)は正確に4ビットのニブルにマッピングされるからです。これにより、1バイトの値をちょうど2桁で簡潔に表現できます(例: 0xFF)。この省略表現は、 マシンコード および アセンブリコードを読む上で不可欠です。たとえば命令 4004dc: 48 03 47 28のようなものです。
2. 精度と演算
整数型データを操作する中で、私たちは 整数型データに直面します。 ブール環 および 2の補数 論理、そして リトルエンディアン ストレージ、 整数オーバーフロー、および 単精度 浮動小数点における細かいニュアンス、特に 無限大 ($+\infty$) および NaN や 任意サイズの演算 が存在する領域です。これらのビットパターンを理解することは、
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>